package BehavioralPattern.Iterator;

/**
 * @Classname : IteratorClient
 * @Description : 测试 迭代器模式
 * 行为型——迭代器模式
 * 一、模式定义
 *   Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
 *   提供一种方法访问一个容器对象中各个元素，而又不需暴露该对象的内部细节。
 * 二、模式类图
 *   https://kdocs.cn/l/chiRrCEzFjxU
 * 三、适用场景
 *   1、当需要遍历一个容器中的元素时（迭代器已经在Java等语言中成为了一个很基础的工具，一般无需自己写迭代器）
 * 四、应用举例
 *   1、Java容器类的迭代器
 * @Author : chentianyu
 * @Date 2023/3/5 15:01
 */


public class IteratorClient {
    public static void main(String[] args) {
        System.out.println("---------迭代器模式---------");
        Aggregate aggregate = new ConcreteAggregate();
        aggregate.add("aaa");
        aggregate.add("bbb");
        aggregate.add("ccc");
        aggregate.add("ddd");
        aggregate.add("eee");
        aggregate.add("fff");
        // 获取迭代器遍历
        Iterator iterator = aggregate.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

/** 20230305
 * ---------迭代器模式---------
 * aaa
 * bbb
 * ccc
 * ddd
 * eee
 * fff
 */
